
<template>
  <main-container headerText="异常管理 >> 异常列表">
    <div class="content" :key="showPageKey" >
    <top-option>
    <div slot="left-box">
      
    <select-search
      lableName="状态"
      selectIdName="state"
      :tThis="this"
      selectPlaceholder="请选择状态"
      :selectOpts="stateOpts"
      selectWidth="150px;"
      labelWidth="80px;"
    />
    
    <select-search
      lableName="类型"
      selectIdName="type"
      :tThis="this"
      selectPlaceholder="请选择类型"
      :selectOpts="typeOpts"
      selectWidth="150px;"
      labelWidth="80px;"
    />
    
    </div>
    <div slot="right-box">
      <div class="sub">
        <el-button @click="handleSearch" class="orange">查询</el-button>
  
      </div>
    </div>
  </top-option>
  
  <!-- 列表栏 -->
  <div class="list">
    <el-table
      ref="multipleTable"
      :data="tableData"
      tooltip-effect="dark"
      style="width: 100%; border-radius: 4px;"
      class="tableBox"
      border
    >
      <el-table-column label="序号" width="60">
          <template slot-scope="scope">
            {{ scope.row.index || '-'}}
          </template>
        </el-table-column>
        
        <el-table-column label="类型" width="undefined" >
          <template slot-scope="scope">{{typeShow[scope.row.type + ''] || '-'}}</template>
        </el-table-column>
        
        <el-table-column label="状态" width="undefined" >
          <template slot-scope="scope">{{stateShow[scope.row.state + ''] || '-'}}</template>
        </el-table-column>
        <el-table-column label="备注" width="undefined">
          <template slot-scope="scope">
            {{ scope.row.remark || '-'}}
          </template>
        </el-table-column>
        <el-table-column label="创建时间" width="undefined">
          <template slot-scope="scope">
            {{ scope.row.gmtCreated || '-'}}
          </template>
        </el-table-column>
        
      
      <el-table-column label="操作" width="180">
        <template slot-scope="scope">
          
      <el-button v-if="scope.row.state == 1" @click="handleChangeStateProcessed" type="primary" :data-id="scope.row.id" size="small">已处理</el-button>
      <el-button v-if="scope.row.state == 2" @click="handleChangeStateVerified" type="primary" :data-id="scope.row.id" size="small">已验证</el-button> 
        </template>
      </el-table-column>
    
    </el-table>
  </div>

    <!-- 分页 -->
    <div class="paging">
      <div class="block">
        <el-pagination
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page="currentPageIdx"
          :page-sizes="[10, 20, 30, 40]"
          :page-size="onePageSize"
          layout="total, prev, pager, next, jumper"
          :total="pageCount"
        ></el-pagination>
      </div>

      <div class="confirm-btn">
        <el-button class="paging-btn" @click="handleEnter" size="small">确定</el-button>
      </div>
  </div>

    
   </div>
  </main-container>
</template>

  <script>
import jhTools from "@/utils/jhTools"; //工具函数
import API from "@/utils/api_config.js"; //引入api

import main_container from '@/components/main_container';
import top_option from "@/components/subCon/topOption";
import input_search from "@/components/subCon/inputSearch";
import select_search from "@/components/subCon/selectSearch";
import date_search from "@/components/subCon/dateSearch";

export default {
  components: {
    "main-container": main_container,
    "top-option": top_option,
    "input-search": input_search,
    "select-search": select_search,
    "date-search": date_search,
  },
  props: {},
  data() {
    return {
      //列表
      tableData: [],
      multipleSelection: [],
      showPageKey: 100,
      //分页
      currentPageIdx: 1, //当前页与跳转框的初始值
      pageCount: 1, //总条数
      onePageSize: 10, //每页的条数
      
      
    formData: {
  
            state: null, 
            type: null, 
    },
  
            stateOpts: [
                  { value: "", label: "全部" },
                  { value: "1", label: "待处理" },
                  { value: "2", label: "待验证" },
                  { value: "3", label: "已解决" },
                ],
                
            typeOpts: [
                    { value: "", label: "全部" },
                    { value: "1", label: "未结算" },
                    { value: "2", label: "账户金额异常" },
                    { value: "3", label: "已标识结算,但没有收益明细" },
                ],
                typeShow : {
            "1": "未结算",
            "2": "账户金额异常",
            "3": "已标识结算,但没有收益明细",
          }, 
      stateShow : {
            "1": "待处理",
            "2": "待验证",
            "3": "已解决",
          }, 
      
   
  
      allMethods: "",
    };
  },
  mounted() {
    this.allMethods = this.getAllMethods();
    //页面数据重置 1
    if (this.recoverSearchF) {
      this.recoverSearchF({ _this: this });
    }
    
    
    this.initRequest();
    
    
    this.getInitData();
  
    
  },
  methods: {
    
    //已处理
    handleChangeStateProcessed (e) {
      this.allMethods.handleChangeStateProcessed (e);
    },
  
    //已验证
    handleChangeStateVerified (e) {
      this.allMethods.handleChangeStateVerified (e);
    },
  
    //查询
    handleSearch() {
      this.allMethods.handleSearch();
    },
  
    
   

    /* 方法抽离集合 */
    getAllMethods() {
      var _this = this;
      return {
        
    //已处理
    handleChangeStateProcessed (e) {
      const { id } = e.currentTarget.dataset;
      var url = API.abnormal_m.edit;
      var data = {id,  state: 3 };
      console.log("参数", data);
      _this.tools.comfirmF({
        _this: _this,
        content: "是否确认此操作？",
        success: () => {

          
          _this.tools.post(
            url,
            data,
            null,
          
            (res) => {
              console.log("结果", res);
              if (res.code == 200) {
                _this.$message({
                  type: "success",
                  message: "操作成功",
                });
                _this.getInitData();
              } else {
                _this.$message({
                  type: "warning",
                  message: res.message,
                });
              }
            },
            (err) => {
              console.log(err);
            }
          );

        }
      });

    },
    
    //已验证
    handleChangeStateVerified (e) {
      const { id } = e.currentTarget.dataset;
      var url = API.abnormal_m.edit;
      var data = {id,  state: 3 };
      console.log("参数", data);
      _this.tools.comfirmF({
        _this: _this,
        content: "是否确认此操作？",
        success: () => {

          
          _this.tools.post(
            url,
            data,
            null,
          
            (res) => {
              console.log("结果", res);
              if (res.code == 200) {
                _this.$message({
                  type: "success",
                  message: "操作成功",
                });
                _this.getInitData();
              } else {
                _this.$message({
                  type: "warning",
                  message: res.message,
                });
              }
            },
            (err) => {
              console.log(err);
            }
          );

        }
      });

    },
    
    //查询
    handleSearch() {
      var {
       
      state,
      type,
      } = _this.formData;
      //保存搜索条件
      _this.currentPageIdx = 1;
      //保存数据 2
      if (_this.saveSearchF) {
        _this.saveSearchF({ _this: _this });
      }
      _this.LingChuang_request.handleSearch({
       
      state,
      type,
        pageIndex: _this.currentPageIdx,
        pageSize: _this.onePageSize,
        
      });
    },
  
    
   
      };
    },
    
    //表格默认函数
    //初始化
    initRequest() {
      this.LingChuang_request = jhTools.LingChuang_request({
        this: this,
        pageUrl: API.abnormal_m.page,
        searchUrl: API.abnormal_m.page,
        searchData: {},
      });
      // console.log(this.LingChuang_request);
    },
    //加载数据
    getInitData: function () {
      var _this = this;
      this.LingChuang_request.getInitData(
        {
          pageIndex: this.currentPageIdx,
          pageSize: this.onePageSize,
          
        },
        function (res) {
          //初始格式化数据
        }
      );
    },
    //格式化数据
    formatData() {
      this.LingChuang_request.formatData();
    },
    //格式化页面
    formatPaging(res) {
      this.LingChuang_request.formatPaging(res);
    },
    //页数跳转
    handleSizeChange(val) {
      this.LingChuang_request.handleSizeChange(val);
      //分页数据 3
      if (this.saveSearchF) {
        this.saveSearchF({ _this: this });
      }
    },
    //页面点击跳转
    handleCurrentChange(val) {
      this.LingChuang_request.handleCurrentChange(val);
      //分页数据 4
      if (this.saveSearchF) {
        this.saveSearchF({ _this: this });
      }
    },
    //enter跳转
    handleEnter() {
      this.LingChuang_request.getPagingData(
        this.currentPageIdx,
        this.onePageSize
      );
      //分页数据 5
      if (this.saveSearchF) {
        this.saveSearchF({ _this: this });
      }
    },
    //分页数据
    getPagingData(pageIndex, pageSize) {
      this.LingChuang_request.handleEnter(pageIndex, pageSize);
    },
    //列表勾选1
    toggleSelection(rows) {
      this.LingChuang_request.toggleSelection(rows);
    },
    //列表勾选2
    handleSelectionChange(val) {
      this.LingChuang_request.handleSelectionChange(val);
    },
    //表格默认函数

    /* 图片预览 */
    previewImgF({ imgUrl }) {
      this.tools.touchGEvent({
        eName: "previewImg",
        imgUrl,
      });
    },

    /* 恢复搜索状态 6 */
    recoverSearchF({ _this }) {
      _this.tools.recoverSearchF({
        _this: this,
        subItemName: "/abnormal_m_abnormal_m_table",
      });
    },

    /* 保存搜索状态 7 */
    saveSearchF({ _this }) {
      _this.tools.saveSearchF({
        _this: this,
        subItemName: "/abnormal_m_abnormal_m_table",
      });
    },

  
  },
};
</script>

<style lang="scss" scoped>
// @import '~styles/mixins.scss';
// @import '~styles/variables.scss';



//隐藏样式类
.hidden {
  display: none !important;
}

.flex {
  display: flex;
  justify-content: center;
  align-items: center;
}
</style>
